/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.olcudegisim.islemler;

/**
 *
 * @author serkan
 */
import com.olcudegisim.agirlik.*;
import com.olcudegisim.alan.*;
import com.olcudegisim.hacim.*;

import java.util.ArrayList;
import java.util.List;

import com.olcudegisim.sicaklik.*;
import com.olcudegisim.uzunluk.*;

public class olcuBirimIslemleri {

	// UZUNLUK
	public List<String> UzunlukBirimleriDon() {
		List<String> li = new ArrayList<String>();
		li.add(new milimetre().olcuBirimi());
		li.add(new santimetre().olcuBirimi());
		li.add(new metre().olcuBirimi());
		li.add(new kilometre().olcuBirimi());
		li.add(new ayak().olcuBirimi());
		li.add(new karamili().olcuBirimi());
		li.add(new denizmili().olcuBirimi());
		li.add(new inch().olcuBirimi());

		return li;
	}

	public List<String> UzunlukBirimAdlariDon() {
		List<String> li = new ArrayList<String>();
		li.add(new milimetre().olcuAdi());
		li.add(new santimetre().olcuAdi());
		li.add(new metre().olcuAdi());
		li.add(new kilometre().olcuAdi());
		li.add(new ayak().olcuAdi());
		li.add(new karamili().olcuAdi());
		li.add(new denizmili().olcuAdi());
		li.add(new inch().olcuAdi());

		return li;
	}

	private List<Double> Uzunluk_BirimDegeri_ListDon(uzunlukBirimleri uzbr) {
		List<Double> listd = new ArrayList<Double>();
		listd.add(uzbr.getMilimetre());
		listd.add(uzbr.getSantimetre());
		listd.add(uzbr.getMetre());
		listd.add(uzbr.getKilometre());
		listd.add(uzbr.getAyak());
		listd.add(uzbr.getKaramili());
		listd.add(uzbr.getDenizmili());
		listd.add(uzbr.getInc());
		return listd;
	}

	public List<Double> istenilen_Uzunluk_Degeri_ListDon(String istenilenBirim) {
		List<Double> listd = new ArrayList<Double>();
		uzunlukBirimleri uzbr;
		if (istenilenBirim == null ? new milimetre().olcuBirimi() == null
				: istenilenBirim.equals(new milimetre().olcuBirimi())) {
			uzbr = new milimetre();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new santimetre().olcuBirimi() == null
				: istenilenBirim.equals(new santimetre().olcuBirimi())) {
			uzbr = new santimetre();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new metre().olcuBirimi() == null
				: istenilenBirim.equals(new metre().olcuBirimi())) {
			uzbr = new metre();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new kilometre().olcuBirimi() == null
				: istenilenBirim.equals(new kilometre().olcuBirimi())) {
			uzbr = new kilometre();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new ayak().olcuBirimi() == null
				: istenilenBirim.equals(new ayak().olcuBirimi())) {
			uzbr = new ayak();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new karamili().olcuBirimi() == null
				: istenilenBirim.equals(new karamili().olcuBirimi())) {
			uzbr = new karamili();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new denizmili().olcuBirimi() == null
				: istenilenBirim.equals(new denizmili().olcuBirimi())) {
			uzbr = new denizmili();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		} else if (istenilenBirim == null ? new inch().olcuBirimi() == null
				: istenilenBirim.equals(new inch().olcuBirimi())) {
			uzbr = new inch();
			listd = this.Uzunluk_BirimDegeri_ListDon(uzbr);
		}
		return listd;
	}

	// ALAN
	public List<String> AlanBirimleriniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new santimetrekare().olcuBirimi());
		li.add(new metrekare().olcuBirimi());
		li.add(new feetkare().olcuBirimi());
		li.add(new hektar().olcuBirimi());
		li.add(new ar().olcuBirimi());
		li.add(new milkare().olcuBirimi());
		li.add(new yardakare().olcuBirimi());
		li.add(new inckare().olcuBirimi());
		li.add(new acres().olcuBirimi());

		return li;
	}

	public List<String> AlanBirimAdlariniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new santimetrekare().olcuAdi());
		li.add(new metrekare().olcuAdi());
		li.add(new feetkare().olcuAdi());
		li.add(new hektar().olcuAdi());
		li.add(new ar().olcuAdi());
		li.add(new milkare().olcuAdi());
		li.add(new yardakare().olcuAdi());
		li.add(new inckare().olcuAdi());
		li.add(new acres().olcuAdi());

		return li;
	}

	private List<Double> Alan_BrimDegeri_ListDon(alanbirimleri albr) {
		List<Double> listd = new ArrayList<Double>();
		listd.add(albr.getSantimetrekare());
		listd.add(albr.getMetrekare());
		listd.add(albr.getFeetkare());
		listd.add(albr.getHektar());
		listd.add(albr.getAr());
		listd.add(albr.getMilkare());
		listd.add(albr.getYardakare());
		listd.add(albr.getInckare());
		listd.add(albr.getAcres());
		return listd;
	}

	public List<Double> istenilen_Alan_Degeri_ListDon(String istenilenBirim) {
		List<Double> listd = new ArrayList<Double>();
		alanbirimleri albr;
		if (istenilenBirim == null ? new santimetrekare().olcuBirimi() == null
				: istenilenBirim.equals(new santimetrekare().olcuBirimi())) {
			albr = new santimetrekare();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new metrekare().olcuBirimi() == null
				: istenilenBirim.equals(new metrekare().olcuBirimi())) {
			albr = new metrekare();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new feetkare().olcuBirimi() == null
				: istenilenBirim.equals(new feetkare().olcuBirimi())) {
			albr = new feetkare();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new hektar().olcuBirimi() == null
				: istenilenBirim.equals(new hektar().olcuBirimi())) {
			albr = new hektar();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new ar().olcuBirimi() == null
				: istenilenBirim.equals(new ar().olcuBirimi())) {
			albr = new ar();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new milkare().olcuBirimi() == null
				: istenilenBirim.equals(new milkare().olcuBirimi())) {
			albr = new milkare();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new yardakare().olcuBirimi() == null
				: istenilenBirim.equals(new yardakare().olcuBirimi())) {
			albr = new yardakare();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new inckare().olcuBirimi() == null
				: istenilenBirim.equals(new inckare().olcuBirimi())) {
			albr = new inckare();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		} else if (istenilenBirim == null ? new acres().olcuBirimi() == null
				: istenilenBirim.equals(new acres().olcuBirimi())) {
			albr = new acres();
			listd = this.Alan_BrimDegeri_ListDon(albr);
		}
		return listd;
	}

	// AGIRLIK
	public List<String> AgirlikBirimleriniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new miligram().olcuBirimi());
		li.add(new gram().olcuBirimi());
		li.add(new kilogram().olcuBirimi());
		li.add(new ons().olcuBirimi());
		li.add(new ton().olcuBirimi());
		li.add(new libre().olcuBirimi());
		li.add(new grain().olcuBirimi());

		return li;
	}

	public List<String> AgirlikBirimAdlariniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new miligram().olcuAdi());
		li.add(new gram().olcuAdi());
		li.add(new kilogram().olcuAdi());
		li.add(new ons().olcuAdi());
		li.add(new ton().olcuAdi());
		li.add(new libre().olcuAdi());
		li.add(new grain().olcuAdi());

		return li;
	}

	private List<Double> Agirlik_BirimDegeri_ListDon(agirlikbirimleri agbr) {
		List<Double> listd = new ArrayList<Double>();
		listd.add(agbr.getMiligram());
		listd.add(agbr.getGram());
		listd.add(agbr.getKilogram());
		listd.add(agbr.getOns());
		listd.add(agbr.getTon());
		listd.add(agbr.getLibre());
		listd.add(agbr.getGrain());
		return listd;
	}

	public List<Double> istenilen_Agirlik_Degeri_ListDon(String istenilenBirim) {
		List<Double> listd = new ArrayList<Double>();
		agirlikbirimleri agbr;
		if (istenilenBirim == null ? new miligram().olcuBirimi() == null
				: istenilenBirim.equals(new miligram().olcuBirimi())) {
			agbr = new miligram();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		} else if (istenilenBirim == null ? new gram().olcuBirimi() == null
				: istenilenBirim.equals(new gram().olcuBirimi())) {
			agbr = new gram();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		} else if (istenilenBirim == null ? new kilogram().olcuBirimi() == null
				: istenilenBirim.equals(new kilogram().olcuBirimi())) {
			agbr = new kilogram();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		} else if (istenilenBirim == null ? new ons().olcuBirimi() == null
				: istenilenBirim.equals(new ons().olcuBirimi())) {
			agbr = new ons();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		} else if (istenilenBirim == null ? new ton().olcuBirimi() == null
				: istenilenBirim.equals(new ton().olcuBirimi())) {
			agbr = new ton();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		} else if (istenilenBirim == null ? new libre().olcuBirimi() == null
				: istenilenBirim.equals(new libre().olcuBirimi())) {
			agbr = new libre();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		} else if (istenilenBirim == null ? new grain().olcuBirimi() == null
				: istenilenBirim.equals(new grain().olcuBirimi())) {
			agbr = new grain();
			listd = this.Agirlik_BirimDegeri_ListDon(agbr);
		}
		return listd;
	}

	// HACIM
	public List<String> HacimBirimleriniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new santimetrekup().olcuBirimi());
		li.add(new metrekup().olcuBirimi());
		li.add(new litre().olcuBirimi());
		li.add(new feetkup().olcuBirimi());
		li.add(new galon().olcuBirimi());
		li.add(new inckup().olcuBirimi());
		li.add(new yardakup().olcuBirimi());

		return li;
	}

	public List<String> HacimBirimAdlariniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new santimetrekup().olcuAdi());
		li.add(new metrekup().olcuAdi());
		li.add(new litre().olcuAdi());
		li.add(new feetkup().olcuAdi());
		li.add(new galon().olcuAdi());
		li.add(new inckup().olcuAdi());
		li.add(new yardakup().olcuAdi());

		return li;
	}

	private List<Double> Hacim_BirimDegeri_ListDon(hacimBirimleri hbr) {
		List<Double> listd = new ArrayList<Double>();
		listd.add(hbr.getSantimetrekup());
		listd.add(hbr.getMetrekup());
		listd.add(hbr.getLitre());
		listd.add(hbr.getFeetkup());
		listd.add(hbr.getGalon());
		listd.add(hbr.getInckup());
		listd.add(hbr.getYardakup());
		return listd;
	}

	public List<Double> istenilen_Hacim_Degeri_ListDon(String istenilenBirim) {
		List<Double> listd = new ArrayList<Double>();
		hacimBirimleri hbr;
		if (istenilenBirim == null ? new santimetrekup().olcuBirimi() == null
				: istenilenBirim.equals(new santimetrekup().olcuBirimi())) {
			hbr = new santimetrekup();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		} else if (istenilenBirim == null ? new metrekup().olcuBirimi() == null
				: istenilenBirim.equals(new metrekup().olcuBirimi())) {
			hbr = new metrekup();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		} else if (istenilenBirim == null ? new litre().olcuBirimi() == null
				: istenilenBirim.equals(new litre().olcuBirimi())) {
			hbr = new litre();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		} else if (istenilenBirim == null ? new feetkup().olcuBirimi() == null
				: istenilenBirim.equals(new feetkup().olcuBirimi())) {
			hbr = new feetkup();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		} else if (istenilenBirim == null ? new galon().olcuBirimi() == null
				: istenilenBirim.equals(new galon().olcuBirimi())) {
			hbr = new galon();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		} else if (istenilenBirim == null ? new inckup().olcuBirimi() == null
				: istenilenBirim.equals(new inckup().olcuBirimi())) {
			hbr = new inckup();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		} else if (istenilenBirim == null ? new yardakup().olcuBirimi() == null
				: istenilenBirim.equals(new yardakup().olcuBirimi())) {
			hbr = new yardakup();
			listd = this.Hacim_BirimDegeri_ListDon(hbr);
		}
		return listd;
	}

	// SICAKLIK
	public List<String> SicaklikBirimleriniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new celcius().olcuBirimi());
		li.add(new fahrenheit().olcuBirimi());

		return li;
	}

	public List<String> SicaklikBirimAdlariniDon() {
		List<String> li = new ArrayList<String>();
		li.add(new celcius().olcuAdi());
		li.add(new fahrenheit().olcuAdi());

		return li;
	}

	private List<Double> Sicaklik_BirimDegeri_ListDon(sicaklikBirimleri sbr) {
		List<Double> listd = new ArrayList<Double>();
		listd.add(sbr.getCelsius());
		listd.add(sbr.getFahrenheit());
		return listd;
	}

	public List<Double> istenilen_Sicaklik_Degeri_ListDon(String istenilenBirim) {
		List<Double> listd = new ArrayList<Double>();
		sicaklikBirimleri sbr;
		if (istenilenBirim == null ? new celcius().olcuBirimi() == null
				: istenilenBirim.equals(new celcius().olcuBirimi())) {
			sbr = new celcius();
			listd = this.Sicaklik_BirimDegeri_ListDon(sbr);
		} else if (istenilenBirim == null ? new fahrenheit().olcuBirimi() == null
				: istenilenBirim.equals(new fahrenheit().olcuBirimi())) {
			sbr = new fahrenheit();
			listd = this.Sicaklik_BirimDegeri_ListDon(sbr);
		}

		return listd;
	}

	public List<Double> uzunluk_cevir(double gelenSayi, String gelenOlcuBirimi) {
		olcuCevir olc = new olcuCevir();
		List<Double> listd = new ArrayList<Double>();
		List<Double> birimList = new ArrayList<Double>();
		birimList = this.istenilen_Uzunluk_Degeri_ListDon(gelenOlcuBirimi);
		for (int i = 0; i < birimList.size(); i++) {
			listd.add(olc.oran_oranti_islemi(1, birimList.get(i), gelenSayi));
		}
		return listd;
	}

	public List<Double> alan_cevir(double gelenSayi, String gelenOlcuBirimi) {
		olcuCevir olc = new olcuCevir();
		List<Double> listd = new ArrayList<Double>();
		List<Double> birimList = new ArrayList<Double>();
		birimList = this.istenilen_Alan_Degeri_ListDon(gelenOlcuBirimi);
		for (int i = 0; i < birimList.size(); i++) {
			listd.add(olc.oran_oranti_islemi(1, birimList.get(i), gelenSayi));
		}
		return listd;
	}

	public List<Double> agirlik_cevir(double gelenSayi, String gelenOlcuBirimi) {
		olcuCevir olc = new olcuCevir();
		List<Double> listd = new ArrayList<Double>();
		List<Double> birimList = new ArrayList<Double>();
		birimList = this.istenilen_Agirlik_Degeri_ListDon(gelenOlcuBirimi);
		for (int i = 0; i < birimList.size(); i++) {
			listd.add(olc.oran_oranti_islemi(1, birimList.get(i), gelenSayi));
		}
		return listd;
	}

	public List<Double> hacim_cevir(double gelenSayi, String gelenOlcuBirimi) {
		olcuCevir olc = new olcuCevir();
		List<Double> listd = new ArrayList<Double>();
		List<Double> birimList = new ArrayList<Double>();
		birimList = this.istenilen_Hacim_Degeri_ListDon(gelenOlcuBirimi);
		for (int i = 0; i < birimList.size(); i++) {
			listd.add(olc.oran_oranti_islemi(1, birimList.get(i), gelenSayi));
		}
		return listd;
	}

	public List<Double> sicaklik_cevir(double gelenSayi, String gelenOlcuBirimi) {
		celcius cel = new celcius();
		fahrenheit fah = new fahrenheit();

		olcuCevir olc = new olcuCevir();
		List<Double> listd = new ArrayList<Double>();
		if (gelenOlcuBirimi == null ? String.valueOf(cel.olcuBirimi()) == null
				: gelenOlcuBirimi.equals(String.valueOf(cel.olcuBirimi()))) {
			listd.add(gelenSayi);
			listd.add(olc.celsius_cevir_fahrenheit(gelenSayi));
		} else if (gelenOlcuBirimi == null ? String.valueOf(fah.olcuBirimi()) == null
				: gelenOlcuBirimi.equals(String.valueOf(fah.olcuBirimi()))) {
			listd.add(olc.fahrenheit_cevir_celsius(gelenSayi));
			listd.add(gelenSayi);
		}

		return listd;
	}
}
